iT邦幫忙

1

在 Colab 上無痛產出 llama.cpp gguf 量化模型

  • 分享至 

  • xImage
  •  

llama.cpp 是個相當受歡迎的語言模型推論框架,但一些相關的環境配置、編譯手法稍微困難一點,若不是有點技術底,一開始玩起來是頗痛苦。

好在後來作者都會定期釋出編譯好而且跨平台的執行檔,加上免費仔最愛的 Colab 可以無痛使用預先建立好的開發環境,今天就來嘗試用 Colab 產生並量化一個 llama.cpp 可用的 Llama 3.1 8B 模型。

  • 優點:
    • Colab 的網路速度超級快 🚀
    • 不用自己設定環境,即開即用 🛠️
  • 缺點:
    • 機器規格較低階,轉換量化較費時 😴

本文操作皆放在此 Colab Demo 裡面供各位參考!

存取模型

若要使用 Llama 3.1 模型,需要先去官方的 HF Hub 上面填表單取得存取權限:

HF Hub Agreement

過一段時間,就會收到 "[Access granted]" 的 Email 通知你可以存取了,接下來點擊右上角的頭像前往 Settings 設定:

HF Hub Settings

到 Access Tokens 分頁點 Create new token 按鈕:

HF Hub Access Tokens

因為我們只是要下載模型,所以 Token type 選擇 Read 即可:

HF Hub Create Token

幫 Token 取個名稱,點擊 Create token 後把 Token 複製下來。

前置準備

在使用 Colab 操作 llama.cpp 之前,需要先做一些前置準備:

  1. 為了支援 Llama 3.1 需要先把 transformers 升級至最新版。
  2. 將 llama.cpp 專案與編譯好的執行檔下載下來。

操作如下:

!pip install transformers -U
!git clone https://github.com/ggerganov/llama.cpp --depth 1
!wget https://github.com/ggerganov/llama.cpp/releases/download/b3452/llama-b3452-bin-ubuntu-x64.zip
!unzip llama-b3452-bin-ubuntu-x64.zip

透過 !huggingface-cli login 登入,在以下方框內輸入剛剛建立的 Access Token 進去:

HF CLI Login

我一開始找那個方框找超久的 🧐

接著下載模型:

!huggingface-cli download meta-llama/Meta-Llama-3.1-8B-Instruct --local-dir llama3.1-8b-inst --exclude 'original/**'

下載完的模型會存在 llama3.1-8b-inst 資料夾底下,因為官方有額外放一份這裡用不到的原始權重,所以加上 --exclude 'original/**' 跳過那些檔案,減少網路傳輸時間。

格式轉換 & 量化壓縮

透過 convert_hf_to_gguf.py 這個程式將模型轉換為 .gguf 格式:

!python /content/llama.cpp/convert_hf_to_gguf.py --outtype f16 --outfile model.f16.gguf llama3.1-8b-inst

受限於 Colab 免費版的機器規格,光這步轉換就要花上五分鐘左右 🤔

這一步產生的 model.f16.gguf 其實已經能夠用 llama.cpp 來執行了,但是因為 Colab 無論是 CPU 還是 GPU 的 RAM 都太少了,所以會跑不起來或跑很慢,因此將模型進一步量化至 8 位元或 4 位元:

!./build/bin/llama-quantize model.f16.gguf model.q4km.gguf Q4_K_M  # 4-Bit
# !./build/bin/llama-quantize model.f16.gguf model.q8.gguf Q8_0    # 8-Bit

這步量化也是要超久 der 大概 15 ~ 20 分鐘左右 😴

實際執行

可以先在 Colab 裡面實際執行看看:

!/content/build/bin/llama-cli -m /content/model.q4km.gguf -p "alan turing was an" -c 128 -n 16

-c 128 會將模型的 Context Window 限制在 128 Tokens 以內,用以減少記憶體的用量,-n 16 代表只生成 16 個 Tokens。程式跑起來一段時間之後,就會看到 "alan turing was an english mathematician and computer scientist..." 這樣就代表成功啦!

接著我們可以把模型下載到自己的電腦裡面,試著在自己的電腦上跑跑看:

Colab Download

4-Bit 的模型大小約 4.5 GB 因此也是需要花上一點時間等他下載,等待期間可以先去下載 Windows 版的 llama.cpp 執行檔,在 Releases 頁面可以看到許多 Assets 可以下載。如果你有 NVIDIA GPU 可以下載 bin-win-cuda-cu12.2.0-x64.zip,如果你的電腦沒有裝 CUDA 需要另外下載 cudart-llama-bin-win-cu12.2.0-x64.zip,如果只想用 CPU 跑的話,下載 bin-win-avx-x64.zipwin-avx2-x64.zip 即可。

GPU 版的部份,需要將 cudart-llama-bin-win-cu12.2.0-x64.zip 解壓縮出來的三個 .dll 檔放在工作目錄底下,然後右鍵選擇「在終端中開啟」:

Windows Terminal

執行時需要加上 -ngl 99 來把模型放進 GPU 裡面,因為有了 GPU 加持,所以一些參數都可以開大一點:

.\llama-b3452-bin-win-cuda-cu12.2.0-x64\llama-cli.exe -m .\model.q4km.gguf -p "alan turing was an" -c 8192 -ngl 99 -n 4096

然後開始享受 GPU 散熱風扇飆速運作的快感 🚀🚀🚀

可以搭配 -cnv -i 啟用聊天模式,搭配 -p 指定系統提示:

.\llama-b3452-bin-win-cuda-cu12.2.0-x64\llama-cli.exe -m .\model.q4km.gguf -p "Reply in Traditional Chinese." -c 8192 -ngl 99 -cnv -i

用起來大概會像這樣:

== Running in interactive mode. ==
 - Press Ctrl+C to interject at any time.
 - Press Return to return control to the AI.
 - To return control without starting a new line, end your input with '/'.
 - If you want to submit another line, end your input with '\'.

system

Reply in Traditional Chinese.


> 你好啊!
您好!

> 什麼是語言模型?
語言模型是一種用於生成和理解自然語言的計算模型。它通過學習大型語料庫的語言模式和規律來了解語言的結構和特徵。語言模型可以用於文本生成、語言翻譯、語意分析等方面的應用。

額外資源

如果你懶得自己轉格式做量化,可以到 HF Hub 上面下載別人轉換好的權重。如果你根本也懶得打指令,那其實可以用 LM Studio 來跑模型!LM Studio 提供美觀且直觀的操作畫面,任何人都可以輕鬆遊玩各式各樣的 LLM 🤗

宣傳

《LLM 大型語言模型的絕世祕笈:27 路獨步劍法,帶你闖蕩生成式 AI 的五湖四海》改編自我參加 2023 年第 15 屆 iThome 鐵人賽 AI & Data 組冠軍系列文章《LLM 學習筆記》,介紹了許多在建立 LLM 相關應用時會使用到的技術。本書預計於 8/9 上市,現在可以在天瓏網路書局上預購,連結請參考留言區,還請大家多多支持!

博碩 | 天瓏 | 博客來 | 鐵人賽系列原文


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言